package com.ztz.mynewdemo;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

/**
 * Created by wqewqe on 2017/5/23.
 */

public abstract class HideRecyclerListener extends RecyclerView.OnScrollListener {
    public static final int HIDE_THRESHOLD=20;
    public int scrolledDistance=0;
    private boolean controlVisible=true;
//    Android:clipToPadding，这个属性用的不多，这里说明一下用法，这个属性意思当就是当我们设置了paddingTop等属性时候，
// 用来设置列表的内容是否可以绘制在padding区域， 默认是true，表示不可以绘制在padding区域，false表示可以在padding区域绘制
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        //当第一个item存在界面上时就不触发隐藏、显示操作
        int firstVisibleItem=((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
        if(firstVisibleItem==0){
            if(!controlVisible){
                Show();
                controlVisible=true;
            }
        }
        else {
        if(scrolledDistance>HIDE_THRESHOLD&&controlVisible){
            Hide();
            controlVisible=false;
            scrolledDistance=0;
        }else if(scrolledDistance<-HIDE_THRESHOLD&&!controlVisible){
            Show();
            controlVisible=true;
            scrolledDistance=0;
        }
    }
        if((controlVisible&&dy>0)||(!controlVisible&&dx<0)){
            scrolledDistance+=dy;//dy>0意味着下滚，dy<0意味着上滚
        }
    }
    public abstract void Hide();
    public abstract void Show();
}
